﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Utilities.QuickSql;
using MySql.Data;
using System.IO;

namespace Deviseur_Cs2i_Car
{
    public partial class AddVoiture : Form
    {
        VOITURE voiture1;
        string UrlImage;
        public AddVoiture()
        {
            InitializeComponent();

            this.Text = "Ajouter une voiture";
            this.buttonAddVoiture.Text = "Ajouter";
            /*******/
            DataTable DataCouleur = new DataTable();

            DataCouleur.Columns.Add("IDCouleur");
            DataCouleur.Columns.Add("Couleur");
            DataCouleur.Columns.Add("PrixCouleur");
            DataCouleur.Columns.Add("Metallise");
            DataCouleur.Rows.Add("0", "- Choisir une couleur de base -");

            Table couleur = Program.Db.QueryTable("SELECT * FROM COULEURCAROSS");
            foreach (Record r in couleur)
                DataCouleur.Rows.Add(r.Values[0], r.Values[1]);

            this.comboBoxCouleur.DataSource = DataCouleur;
            this.comboBoxCouleur.ValueMember = "IDCouleur";
            this.comboBoxCouleur.DisplayMember = "Couleur";


            this.comboBoxCouleur.SelectedIndex = 0;
            /*******/
            DataTable DataType = new DataTable();

            DataType.Columns.Add("IDCategorie");
            DataType.Columns.Add("Categorie");
            DataType.Rows.Add("0", "- Choisir une catégorie -");

            Table type = Program.Db.QueryTable("SELECT * FROM TYPE");
            foreach (Record r in type)
                DataType.Rows.Add(r.Values[0], r.Values[1]);

            this.comboBoxType.DataSource = DataType;
            this.comboBoxType.ValueMember = "IDCategorie";
            this.comboBoxType.DisplayMember = "Categorie";

            this.comboBoxType.SelectedIndex = 0;
        }
        public AddVoiture(int NumVoiture)
        {
            InitializeComponent();
            
            this.Text = "Modifier une voiture";
            this.buttonAddVoiture.Text = "Modifier";

            /*******/
            DataTable DataCouleur = new DataTable();

            DataCouleur.Columns.Add("IDCouleur");
            DataCouleur.Columns.Add("Couleur");
            DataCouleur.Columns.Add("PrixCouleur");
            DataCouleur.Columns.Add("Metallise");
            DataCouleur.Rows.Add("0", "- Choisir une couleur de base -", "0");

            Table couleur = Program.Db.QueryTable("SELECT * FROM COULEURCAROSS");
            foreach (Record r in couleur)
                DataCouleur.Rows.Add(r.Values[0], r.Values[1], r.Values[2]);

            this.comboBoxCouleur.DataSource = DataCouleur;
            this.comboBoxCouleur.ValueMember = "IDCouleur";
            this.comboBoxCouleur.DisplayMember = "Couleur";

            this.comboBoxCouleur.SelectedIndex = 0;
            /*******/
            DataTable DataType = new DataTable();

            DataType.Columns.Add("IDCategorie");
            DataType.Columns.Add("Categorie");
            DataType.Rows.Add("0", "- Choisir une catégorie -");
            Table categorie = Program.Db.QueryTable("SELECT * FROM TYPE");
            foreach (Record r in categorie)
                DataType.Rows.Add(r.Values[0], r.Values[1]);

            this.comboBoxType.DataSource = DataType;
            this.comboBoxType.ValueMember = "IDCategorie";
            this.comboBoxType.DisplayMember = "Categorie";

            Table toto = Program.Db.QueryTable("SELECT * FROM VOITURE WHERE NumVoi="+NumVoiture);
            foreach (Record r in toto)
            {
                this.textBoxNom.Text = r.Values[1].ToString();
                this.textBoxNbPortes.Text = r.Values[2].ToString();
                this.textBoxPrix.Text = r.Values[3].ToString();
                this.comboBoxCouleur.SelectedValue = r.Values[4].ToString();
                this.comboBoxType.SelectedValue = r.Values[5].ToString();
                voiture1 = new VOITURE(NumVoiture, this.textBoxNom.Text.ToString(), Convert.ToInt32(this.textBoxNbPortes.Text), Convert.ToDouble(this.textBoxPrix.Text), Convert.ToInt32(this.comboBoxCouleur.SelectedValue), Convert.ToInt32(this.comboBoxType.SelectedValue));
            }

            this.comboBoxType.SelectedIndex = 0;
           
            
        }
        private void buttonAddVoiture_Click(object sender, EventArgs e)
        {
            if (textBoxNom.Text.ToString() != "" && textBoxNbPortes.Text != "" && textBoxPrix.Text != "" && comboBoxCouleur.SelectedValue.ToString() != "0" && comboBoxType.SelectedValue.ToString() != "0")
            {
                if (this.buttonAddVoiture.Text == "Ajouter")
                {
                    if (this.textBoxNbPortes.Text == "")
                        this.textBoxNbPortes.Text = "0";

                    voiture1 = new VOITURE(this.textBoxNom.Text.ToString(), Convert.ToInt32(this.textBoxNbPortes.Text), Convert.ToDouble(this.textBoxPrix.Text), Convert.ToInt32(this.comboBoxCouleur.SelectedValue.ToString()), Convert.ToInt32(this.comboBoxType.SelectedValue.ToString()));

                    voiture1.set_Image(this.UrlImage);



                    Thread addThread = new Thread(new ThreadStart(addVoiture_Thread));
                    addThread.Start();
                }
                else if (this.buttonAddVoiture.Text == "Modifier")
                {
                    voiture1.set_NomVoiture(this.textBoxNom.Text.ToString());
                    voiture1.set_NbPortes(Convert.ToInt32(this.textBoxNbPortes.Text));
                    voiture1.set_PrixbaseVoiture(Convert.ToDouble(this.textBoxPrix.Text));
                    voiture1.set_CouleurCaross(new COULEURCAROSS(Convert.ToInt32(this.comboBoxCouleur.SelectedValue.ToString())));
                    voiture1.set_Type(new TYPE(Convert.ToInt32(this.comboBoxType.SelectedValue.ToString())));
                    Thread updateThread = new Thread(new ThreadStart(updateType_Thread));
                    updateThread.Start();
                }
            }
            else
            {
                MessageBox.Show("Veuillez remplir tous les champs", "Erreur de saisie");
            }
        }

        private void addVoiture_Thread()
        {
            Invoke(new MethodInvoker(Disabled));
            voiture1.new_Voiture();
            Invoke(new MethodInvoker(CloseFen));
        }
        private void updateType_Thread()
        {
            Invoke(new MethodInvoker(Disabled));
            voiture1.modify_Voiture();
            Invoke(new MethodInvoker(CloseFen));
        }

        private void Disabled()
        {
            this.textBoxNom.Enabled = false;
            this.textBoxPrix.Enabled = false;
            this.comboBoxCouleur.Enabled = false;
            this.comboBoxType.Enabled = false;
            this.buttonAddVoiture.Enabled = false;
        }
        private void CloseFen()
        {
            this.Close();
        }

        private void buttonParcourir_Click(object sender, EventArgs e)
        {
            this.openFileDialog.ShowDialog();
        }

        private void openFileDialog_FileOk(object sender, CancelEventArgs e)
        {
            this.UrlImage = this.openFileDialog.FileName.ToString();
            pictureBox1.Image = Image.FromStream(System.IO.File.OpenRead(this.openFileDialog.FileName.ToString()));
        }
    }
}
